The amount of time needed to download a web page is an important indicator of the quality of a user's experience when browsing web sites on the Internet. Downloading a web page involves many transactions at several levels. At the Transmission Control Protocol/Internet Protocol (TCP/IP) level, one or more TCP connections are established between the client and the server. Once the connection is established, at the Hypertext Transfer Protocol (HTTP) level, several request-response transactions are carried out to complete a web page download. The first HTTP request from the client fetches the top level HyperText Markup Language (HTML) content for the web page. The web browser then parses the retrieved HTML content and sends out additional HTTP requests to the content server for all embedded objects such as Java Script objects, Cascading Style Sheet (CSS) objects, and image objects. The client device can monitor when a web page request started and when the last HTTP response associated with the web page was received.
Because the client has this monitoring capability, measuring the time needed to download a web page can be straightforward when the measurement is made at the client. This can be done by starting a timer when the first HTTP request to the content server is sent, and stopping the timer when the last HTTP object is received and the web page is completely rendered in a client application such as the web browser.
Measuring the web page download time at the content server is also relatively straightforward if all the content is served from the same server. The server also has complete knowledge to determine the first and last HTTP transaction corresponding to a web page download from a client. The measurement, however, becomes complicated if content for a single web page is distributed across several physical servers in order to distribute load or due to partnerships with third party content providers such as advertisements providers. In these circumstances, a single content server may not have all the information to determine the time taken to download a complete web page.
Moreover, an intermediate network node also may not have all information to determine the time taken to download a complete web page. An intermediate network node can, in theory, parse HTML content served from content servers and determine the composition of a web page including all the embedded objects in the page. But since dynamic Universal Resource Locators (URLs) that are generated by execution of Java Script on the client cannot be predicted, access to HTTP cookies that are stored only on the client may be required in order to measure the time taken to download the complete web page. Thus it is practically not feasible to accurately measure the time taken to download a web page at an intermediate network node located between a client and a server.